package juego.personaje.mario;

import java.util.Timer;
import java.util.TimerTask;

import javax.swing.ImageIcon;

import juego.graficos.ElementoGrafico;
import juego.main.SoundPlayer;
import juego.malos.Enemigo;
/**
 * Clase que modela la caracteristica inmunizable de Mario Bros.
 * @author Latini Macarena
 * @author Rosas Tifany
 */
public class CaracteristicaInmunizable extends CaracteristicaSuper{

	protected Timer timer;
	protected int segundos;//manejar el valor del contador
	protected SoundPlayer s;
	
	/**
	 * Constructor
	 * @param m Mario Bros.
	 */
	protected CaracteristicaInmunizable(Mario m) {
		super(m);	
		segundos = 0;
		comenzarConteo();		
		crearGraficos();
		// TODO Auto-generated constructor stub
	}



	//clase interna que sobre-escribe el metodo run de TimerTask
	class RemindTask extends TimerTask {
		public void run() {
			segundos++;
			if(segundos==15){
				timer.cancel(); //detenemos el timer
				convertirA(mario);
			}	
		}
	}
	
	public void comenzarConteo()
	{
		timer = new Timer();
		//le asignamos una tarea al timer
		timer.schedule(new RemindTask(),0, 1*1000);
	}
	
	public Mario convertirA(Mario m)
	{

		mario.setCaracteristica(new CaracteristicaSuper(mario));
		Caracteristica c=mario.obtenerCaracteristica();
		c.setGrafica();
		mario.setCaracteristica(c);
		return m;
		
	}
	@Override
	public void colisionConMalo(Enemigo e)
	{
		e.getGrafico().setVisible(false);
		e.setVive(false);
		e.destruir();
	}
	
	/**
	 * Setea la grafica correspondiente para esta caracteristica.
	 */
	public  void setGrafica(){
		// TODO Auto-generated method stub
		ElementoGrafico eg= new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/invencible/quieto.gif")));
	
		eg.setBounds(0,0, 32, 64);
		mario.setGrafico(eg);
		int x=mario.getGrafico().getLocation().x;
		int y=mario.getGrafico().getLocation().y;
		mario.getGrafico().setBounds(x, y, 32, 64);
		mario.getGrafico().setLocation(x, y);
		controlarSalto=eg;	
	}
	
	/**
	 * Crea los graficos correspondientes a la caracteristica que se
	 * esta modelando.
	 */
	public void crearGraficos()
	{
		derecha=new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/invencible/marioinvencible.gif")));
		derecha.setBounds(0,0, 32, 64);

		izquierda= new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/invencible/marioinvencible2.gif")));
		izquierda.setBounds(0,0, 32, 64);

		nada= new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/invencible/quieto.gif")));
		nada.setBounds(0,0, 32, 64);
		
		saltarder= new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/invencible/marioinvenciblesalta.gif")));
		saltarder.setBounds(0,0, 32, 64);
		
		saltarizq= new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/invencible/marioinvenciblesalta2.gif")));
		saltarizq.setBounds(0,0, 32, 64);
		
		agachado=new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/invencible/agachadoinv.gif")));
		agachado.setBounds(0,0, 32, 64);
		agachado.setLayout(null);
		
		controlarSalto=new ElementoGrafico(new ImageIcon(getClass().getClassLoader().getResource("juego/graficos/invencible/quieto.gif")));
		controlarSalto.setBounds(0,0, 32, 64);

	}


}
